package component.fy.com.common_module.utils;

import android.content.Context;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;

import component.fy.com.common_module.R;
import component.fy.com.common_module.constant.AppConstant;
import component.fy.com.common_module.widget.GlideCircleTransform;

/**
 * Glide图片加载工具
 */
public class GlideUtils {
    private static final String TAG = "GlideUtils";

    /**
     * 设置正常图片
     *
     * @param context
     * @param imageUrl
     * @param imageView
     */
    public static void setImageNormal(Context context, String imageUrl, @NonNull ImageView imageView) {
        if (TextUtils.isEmpty(imageUrl)) {//地址为空
            Glide.with(context)
                    .load(R.mipmap.moren)//可以替换为自己的默认图片
                    .into(imageView);
        } else {//地址不为空
            if (MyUtil.isContainsHttp(imageUrl)) {//地址完整
                Glide.with(context)
                        .load(imageUrl)
                        .diskCacheStrategy(DiskCacheStrategy.RESULT)
                        .into(imageView);
            } else {//地址不完整
                Glide.with(context)
                        .load(AppConstant.BaseUrl + imageUrl)
                        .diskCacheStrategy(DiskCacheStrategy.RESULT)
                        .into(imageView);
            }
        }
    }

    /**
     * 设置正常图片
     *
     * @param context
     * @param imageUrl
     * @param imageView
     * @param width     宽
     * @param height    高
     */
    public static void setImageNormal(Context context, String imageUrl, @NonNull ImageView imageView, int width, int height) {
        if (TextUtils.isEmpty(imageUrl)) {//地址为空
            Glide.with(context)
                    .load(R.mipmap.moren)//可以替换为自己的默认图片
                    .override(width, height)
                    .into(imageView);
        } else {//地址不为空
            if (MyUtil.isContainsHttp(imageUrl)) {//地址完整
                Glide.with(context)
                        .load(imageUrl)
                        .override(width, height)
                        .diskCacheStrategy(DiskCacheStrategy.RESULT)
                        .into(imageView);
            } else {//地址不完整
                Glide.with(context)
                        .load(AppConstant.BaseUrl + imageUrl)
                        .override(width, height)
                        .diskCacheStrategy(DiskCacheStrategy.RESULT)
                        .into(imageView);
            }
        }
    }

    /**
     * 设置正常图片
     *
     * @param context
     * @param imageUrl
     * @param imageView
     * @param bitmapTransformation
     */
    public static void setImageNormal(Context context, String imageUrl, @NonNull ImageView imageView, BitmapTransformation bitmapTransformation) {
        if (TextUtils.isEmpty(imageUrl)) {//地址为空
            Glide.with(context)
                    .load(R.mipmap.moren)//可以替换为自己的默认图片
                    .transform(bitmapTransformation)
                    .into(imageView);
        } else {//地址不为空
            if (MyUtil.isContainsHttp(imageUrl)) {//地址完整
                Glide.with(context)
                        .load(imageUrl)
                        .transform(bitmapTransformation)
                        .diskCacheStrategy(DiskCacheStrategy.RESULT)
                        .into(imageView);
            } else {//地址不完整
                Glide.with(context)
                        .load(AppConstant.BaseUrl + imageUrl)
                        .transform(bitmapTransformation)
                        .diskCacheStrategy(DiskCacheStrategy.RESULT)
                        .into(imageView);
            }
        }
    }

    /**
     * 设置圆形图片
     *
     * @param context
     * @param imageUrl
     * @param imageView
     */
    public static void setImageCircle(Context context, String imageUrl, @NonNull ImageView imageView) {
        if (TextUtils.isEmpty(imageUrl)) {//地址为空
            Glide.with(context)
                    .load(R.mipmap.moren)//可以替换为自己的默认图片
                    .transform(new GlideCircleTransform(context))
                    .into(imageView);
        } else {//地址不为空
            if (MyUtil.isContainsHttp(imageUrl)) {//地址完整
                Glide.with(context)
                        .load(imageUrl)
                        .transform(new GlideCircleTransform(context))
                        .diskCacheStrategy(DiskCacheStrategy.RESULT)
                        .into(imageView);
            } else {//地址不完整
                Glide.with(context)
                        .load(AppConstant.BaseUrl + imageUrl)
                        .transform(new GlideCircleTransform(context))
                        .diskCacheStrategy(DiskCacheStrategy.RESULT)
                        .into(imageView);
            }
        }
    }

    /**
     * 设置正常图片（本地）
     *
     * @param context
     * @param imageUrl
     * @param imageView
     */
    public static void setImageNormal(Context context, int imageUrl, ImageView imageView) {
        if (imageUrl == 0) {
            Glide.with(context)
                    .load(R.mipmap.moren)//可以替换为自己的默认图片
                    .into(imageView);
        } else {
            Glide.with(context)
                    .load(imageUrl)
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .into(imageView);
        }
    }

    /**
     * 设置正常图片(本地)
     *
     * @param context
     * @param imageUrl
     * @param imageView
     * @param bitmapTransformation
     */
    public static void setImageNormal(Context context, int imageUrl, ImageView imageView, BitmapTransformation bitmapTransformation) {
        if (imageUrl == 0) {
            Glide.with(context)
                    .load(R.mipmap.moren)//可以替换为自己的默认图片
                    .transform(bitmapTransformation)
                    .into(imageView);
        } else {
            Glide.with(context)
                    .load(imageUrl)
                    .transform(bitmapTransformation)
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .into(imageView);
        }
    }

    /**
     * 设置圆形图片
     *
     * @param context
     * @param imageUrl
     * @param imageView
     */
    public static void setImageCircle(Context context, int imageUrl, ImageView imageView) {
        if (imageUrl == 0) {
            Glide.with(context)
                    .load(R.mipmap.moren)
                    .transform(new GlideCircleTransform(context))
                    .into(imageView);
        } else {
            Glide.with(context)
                    .load(imageUrl)
                    .transform(new GlideCircleTransform(context))
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .into(imageView);
        }
    }

    /**
     * 清除Glide图片缓存
     *
     * @param context
     */
    public static void clearGlideCache(final Context context) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                //清除磁盘缓存
                Glide.get(context).clearDiskCache();
                //清除内存缓存
                Glide.get(context).clearMemory();
            }
        });
    }
}
